from Appli import App

##############
# QUESTION 2 #
##############
#1)
def chemin_minimaux(t:list) -> list:
    """Renvoi un tableau avec les sommes cumulées des chemins dans le tableau t.
    """
    pass
    # TODO

if __name__ == "__main__":
    t = [[1,4,3,5,2],
         [3,2,5,2,3],
         [5,2,4,2,1]]
    chemins = chemin_minimaux(t)
    print(chemins)

#2)
if __name__ == "__main__":
    t2 = [[9, 5, 9, 4, 7, 5, 4], [8, 6, 3, 7, 3, 6, 3], [1, 7, 3, 5, 7, 1, 7], [7, 1, 6, 2, 2, 4, 6], [3, 7, 8, 4, 7, 9, 4], [4, 2, 7, 8, 7, 7, 9]] 
    #assert chemin_minimaux(t2) == [[9, 5, 9, 4, 7, 5, 4], [13, 11, 7, 11, 7, 10, 7], [12, 14, 10, 12, 14, 8, 14], [19, 11, 16, 12, 10, 12, 14], [14, 18, 19, 14, 17, 19, 16], [18, 16, 21, 22, 21, 23, 25]]


##############
# QUESTION 3 #
##############
#1)
def determine_chemin_minimal(t:list, chemins:list) -> list:
    """Renvoi un tableau contenant l'abscisse de chaque point du chemin minimal
    dans le tableau t à partir des poids cumulés du tableau chemins."""
    assert len(t) == len(chemins)
    # TODO


if __name__ == "__main__":
    pass
    #print(determine_chemin_minimal(t,chemins))

#2)
if __name__ == "__main__":
    pass
    #assert determine_chemin_minimal(t2,chemin_minimaux(t2)) == [3, 2, 2, 1, 0, 1]


#4)  (optionnel)
def enleve_chemin_minimal(t:list, chemin_minimal:list) -> None:
    """Retire le chemin minimal dans le tableau t en se servant du tableau
    chemin_minimal qui contient les abscisses des cases à enlever pour chaque
    ligne (renvoyé par la fonction determine_chemin_minimal). On retire donc
    une colonne à chaque ligne du tableau."""
    assert len(t) == len(chemin_minimal)
    # TODO

if __name__ == "__main__":
    pass
    #assert enleve_chemin_minimal(t, determine_chemin_minimal(t,chemins)) == [[4, 3, 5, 2], [3, 5, 2, 3], [5, 4, 2, 1]]


# QUESTIONS 4 et 5
if __name__ == "__main__":
    pass
    #App()
